# coding=utf-8
# 开发时间：2023/8/15 20:30

class Config:
    # 配置数据库和SQLALCHEMY
    HOSTNAME = '127.0.0.1'
    PORT = '3306'
    DATABASE = 'test2'
    USERNAME = 'root'
    PASSWORD = 'root'
    DB_URI = 'mysql+pymysql://{}:{}@{}:{}/{}?charset=utf8mb4'.format(USERNAME, PASSWORD, HOSTNAME, PORT, DATABASE)

    # 把链接数据库的参数设置到app中
    SQLALCHEMY_DATABASE_URI = DB_URI
    SQLALCHEMY_TRACK_MODIFICATIONS = False  # 不需要跟踪数据的修改

    # 设置日志配置
    LOGGING_FILE_DIR = 'logs/'
    LOGGING_FILE_LEVEL = 'DEBUG'
    LOGGING_FILE_MAX_BYTES = 300 * 1024 * 1024  # 300M的意思
    LOGGING_FILE_BACKUP = 100

    # 限流器采用Redis保存数据，默认是内存，需要安装flask-redis,安装以后配置好参数，会自动连接到对应的redis数据库
    RATELIMIT_STORAGE_URL = 'redis://192.168.58.4:6379/0'
    # 限制策略：移动窗口：时间窗口会自动变化
    RATELIMIT_STRATEGY = 'moving-window'
    '''
    这两个参数是由 Flask-Limiter 插件识别的，而不是 Flask-Redis。
RATELIMIT_STORAGE_URL: 这个参数用于配置限流插件使用的存储后端，指定存储的位置和配置。在你的例子中，存储后端是 Redis，
指定了 Redis 服务器的地址和端口号以及数据库编号。
RATELIMIT_STRATEGY: 这个参数用于配置限制策略，决定了限流的具体实现方式。在你的例子中，策略是 'moving-window'，
表示使用移动窗口策略，即时间窗口会自动变化。
总的来说，这两个参数都是用于配置 Flask-Limiter 插件的行为，而不是与 Flask-Redis 直接相关的配置。'''

    # redis数据库的连接地址，使用数据库1来存放缓存数据包括短信验证码。这个才是redis在存储验证码时要用到的配置。
    REDIS_URL = "redis://192.168.58.4:6379/1"


# 开发环境下的配置信息
class DevelopmentConfig(Config):
    DEBUG = True
    SQLALCHEMY_ECHO = True  # 打印sql语句


# 生产环境下的配置信息
class ProductConfig(Config):
    pass
